package cn.zswltech.gruul.api;

import cn.zswltech.gruul.common.dto.*;
import cn.zswltech.gruul.common.entity.DisplayGroupDO;
import cn.zswltech.gruul.common.entity.RoleDO;
import cn.zswltech.gruul.common.result.Response;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import java.util.List;

/**
 * @author Jim
 * @version 1.0.0
 * @descripition:
 * @date 2024/1/29 13:41
 */
// @FeignClient(value = "gruul",path = "/role")
@RequestMapping("role")
public interface RoleApi {



    /**
     * 创建角色
     *
     * @return
     */
    @PostMapping("/add")
    Response add(@RequestBody @Valid RoleAddREQ req);

    /**
     * 查看应用下角色列表
     *
     * @return
     */
    @PostMapping("list")
    Response<List<RoleDO>> getRolesByOrgCode();

    /**
     * 根据角色id删除指定角色
     * @return
     */
    @PostMapping("/delete")
    Response deleteRole(@RequestBody @Valid RoleDelREQ req);

    /**
     * 修改角色基本信息
     *
     * @return
     */
    @PostMapping("/update")
    Response updateRole(@RequestBody @Valid RoleUpdateREQ req);

    /**
     * 查看角色详情
     *
     * @param id
     * @return
     */
    @GetMapping("detail")
    Response<RoleDO> detail(@Param("id") Long id);



    /**
     * 查询角色绑定的资源
     * @param req
     * @return
     */
    @PostMapping("/menuResource")
    Response<RoleMenuResourceRSP> queryRoleResource(@RequestBody @Valid RoleMenuResourceREQ req);

    /**
     * 获取角色对应的用户信息
     * @param req 角色集合
     * @return 用户集合
     */
    @PostMapping("/role2Users")
    Response<List<Role2UserInfo>> getRole2Uers(@RequestBody Role2UserREQ req);


}
